/** 简单角色输出DTO */
export interface RoleOutputDtoSimple {
  /** 角色编号 */
  Id: string | bigint;
  /** 角色名称 */
  Name: string;
  /** 角色描述 */
  Description: string;
  /** 备注 */
  Remark: string;

  /** 是否管理 */
  IsAdmin: boolean;
}

/** 角色输出DTO */
export interface RoleOutputDto {
  /** 角色编号 */
  Id: string | bigint;
  /** 角色名称 */
  Name: string;
  /** 角色描述 */
  Description: string;
  /** 备注 */
  Remark: string;

  /** 是否管理员角色 */
  IsAdmin: boolean;
  /** 是否默认 */
  IsDefault: boolean;
  /** 是否系统角色 */
  IsSystem: boolean;

  /** 是否锁定 */
  IsLocked: boolean;

  /** 创建者编号 */
  CreatorId?: string | bigint | null;
  /** 创建者名称 */
  CreatorName: string;
  /** 创建者昵称 */
  CreatorNickname: string;
  /** 创建时间 */
  CreatedTime: Date;

  /** 更新者编号 */
  UpdaterId?: string | bigint | null;
  /** 更新者名称 */
  UpdaterName: string;
  /** 更新者昵称 */
  UpdaterNickname: string;
  /** 更新时间 */
  UpdatedTime?: Date | null;

  /** 是否可更新的数据权限状态 */
  Updatable: boolean;
  /** 是否可删除的数据权限状态 */
  Deletable: boolean;
}
/** 角色节点 */
export interface RoleNode {
  /** 角色编号 */
  Id: string | bigint;
  /** 角色名称 */
  Name: string;
  /** 角色描述 */
  Description: string;
  /** 备注 */
  Remark: string;

  /** 管理员角色 */
  IsAdmin: boolean;
  /** 系统角色 */
  IsSystem: boolean;
  /** 锁定 */
  IsLocked: boolean;

  /** 是否选中 */
  IsChecked: boolean;
}
/** 角色组织机构节点 */
export interface RoleOrganizationNode extends RoleNode {
  /** 机构管理员 */
  Administrator: boolean;
  /** 机构经理 */
  Leader: boolean;
}

/** 角色信息输入DTO */
export interface RoleInputDto {
  /** 角色编号 */
  Id: string | bigint;

  /** 角色名称 */
  Name: string;
  /** 角色描述 */
  Description: string;
  /** 备注 */
  Remark: string;

  /** 是否管理员角色 */
  IsAdmin: boolean;
  /** 是否默认角色，用户注册后拥有此角色 */
  IsDefault: boolean;
  /** 是否锁定 */
  IsLocked: boolean;
}

/** 角色用户设置DTO */
export interface RoleSetUserDto {
  /** 角色编号 */
  RoleId: string | bigint;
  /** 要设置的用户编号 */
  UserIds: (string | bigint)[];
}
/** 角色组织机构设置DTO */
export interface RoleSetOrganizationDto {
  /** 角色编号 */
  RoleId: string | bigint;
  /** 角色组织机构DTO */
  RoleOrganizations: RoleOrganizationDto[];
}
/** 角色组织机构DTO */
export interface RoleOrganizationDto {
  /** 组织机构编号 */
  OrganizationId: string | bigint;
  /** 机构管理员 */
  Administrator: boolean;
  /** 机构经理 */
  Leader: boolean;
}

/** 角色设置权限DTO */
export interface RoleSetModuleDto {
  /** 角色编号 */
  RoleId: string | bigint;
  /** 要设置的模块编号 */
  ModuleIds: (string | bigint)[];
}
